    
package blue.laggoon.ppe;

import java.sql.*;
import javax.swing.JTable;



public class AccesBDD
{
    
    private static Connection connect = null;
    private static PreparedStatement preparedStatement = null;
     private static PreparedStatement preparedStatement2 = null;

    private static ResultSet resultSet = null;

    

    public static void main(String[] args)
    {      

        try
        {
            // Lorsque l'on appelle une méthode particulière, la méthode main n'est pas appelée et la connexion à la BDD ne se fait donc pas.
            // Voir pour créer la connexion de manière globale ou peut-être refaire une connexion à chaque appel de méthode.
            
            
            /*String url = "jdbc:mysql://localhost:3128/bluelagoonslam3";    
            String user = "root";
            String passwd = "";
            conn = DriverManager.getConnection(url, user, passwd);
            System.out.println("Connexion effective !");      */   
            //Class.forName("com.mysql.jdbc.Driver").newInstance(); 
            
            /*connect = DriverManager.getConnection("jdbc:mysql://localhost/bluelagoonslam3?"
                    + "user=root");*/
            
            //liredatabase();
            //get_bracelet();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
      }

    // Méthode de connexion  - Maxime
    public static Boolean LogIn(String name, String pwd) throws Exception
    {
        String log = name;
        String mdp = pwd;
        Statement statement = null;
        String SNblignes = "";
        Integer Nblignes = 0;
        
        connect = DriverManager.getConnection("jdbc:mysql://localhost/bluelagoonslam3?" + "user=root");
        statement = connect.createStatement();
        
        
        ResultSet result = statement.executeQuery("SELECT Count(*) FROM employe WHERE nomEmploye LIKE '"+name+"' AND pswEmploye LIKE '"+pwd+"';");
        
        
        //On récupère les MetaData
        ResultSetMetaData resultMeta = result.getMetaData();
         
         
        while(result.next()) // Parcours du ResultSet. Renvoi un String "0" si rien n'est trouvé ou "X" pour X lignes trouvées.
        {         
            for(int i = 1; i <= resultMeta.getColumnCount(); i++)
            {
                SNblignes = result.getObject(i).toString();
            }
        }

        Nblignes = Integer.parseInt(SNblignes); // Convertion de String vers Int pour vérification

        result.close();
        statement.close();

        if(Nblignes > 0)// S'il y a au moins une ligne, donc le couple nom/mdp est bon et donc l'utilisateur est connecté.
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    
    //Code pour avoir les bassins
    /*
    public static void getBassin() throws Exception
    {
       try
       {
            connect = DriverManager.getConnection("jdbc:mysql://localhost?"
                  + "user=root&password=");

            preparedStatement = connect.prepareStatement("SELECT * from bassin");
            resultSet = preparedStatement.executeQuery();

            while (resultSet.next()) 
            {
                 String idBassin = resultSet.getString("idBassin");
                 String nomBassin = resultSet.getString("nomBassin");
                 String superficieBassin = resultSet.getString("superficieBassin");
                 String temperatureTempsReel = resultSet.getString("temperatureTempsReel");

                 System.out.println("Id: " + idBassin);
                 System.out.println("Nom: " + nomBassin);
                 System.out.println("Superficie du bassin: " + superficieBassin);
                 System.out.println("Temperature en temps réel: " + temperatureTempsReel);
            }
       }
       catch (Exception e)
       {
               throw e;    
       }
    }
    */
    
    
    // Méthode de récupération d'informations - Christopher
    public static String getInfos() throws Exception
    {
        String etatBracelet=null;
        try
        {
            connect = DriverManager.getConnection("jdbc:mysql://localhost/bluelagoonslam3?"
                  + "user=root&password=");
            
            preparedStatement = connect.prepareStatement("SELECT count(idBracelet) as NbBracelet from bracelet where etatBracelet='actif'");
            resultSet = preparedStatement.executeQuery();
            System.out.println(preparedStatement);
          
            while (resultSet.next()) 
            {
                etatBracelet = resultSet.getString("NbBracelet");
                System.out.println("Superficie du bassin: " + etatBracelet);
                System.out.println(resultSet);
            }
        }
        catch (Exception e)
        {
            throw e;    
        }
        return etatBracelet;
    }
     
    public static void getTarifs() throws Exception
    {
  
       try
       {
            connect = DriverManager.getConnection("jdbc:mysql://localhost/bluelagoonslam3?"
                      + "user=root&password=");
            preparedStatement2 = connect.prepareStatement("SELECT libTarif as Tarif, prixTarif as Prix from tarifs");
            resultSet = preparedStatement2.executeQuery();
            Informations i = new Informations();
            i.getTableauPrix().setModel(DbUtils.resultSetToTableModel(resultSet));
            i.setVisible(true);
        }
        catch (Exception e)
        {
            throw e;    
        }
    }
    
     
     
    // Méthode de récupération d'informations sur les bracelets - Christopher
    public static void get_bracelet() throws Exception
    {
        try
       {
           
                connect = DriverManager.getConnection("jdbc:mysql://localhost/bluelagoonslam3?"
                  + "user=root&password=");
            preparedStatement = connect.prepareStatement("SELECT count(*) FROM bracelet WHERE etatBracelet != 'inactif'");
            resultSet = preparedStatement.executeQuery();

            while (resultSet.next()) 
            {
               String idBracelet = resultSet.getString("idBracelet");
               String etatBracelet = resultSet.getString("etatBracelet");
               String typeBracelet = resultSet.getString("typeBraclet");

               System.out.println("Id: " + idBracelet);
               System.out.println("Etat: " + etatBracelet);
               System.out.println("Type " + typeBracelet);


          }
       }
       catch (Exception e)
       {
               throw e;    
       }
        
    }
    
    // Méthode qui permet de récuperer les prestations
    public static void get_prestations() throws Exception
    {
       try
       {
           
        connect = DriverManager.getConnection("jdbc:mysql://localhost/bluelagoonslam3?"
                  + "user=root&password=");
        preparedStatement = connect.prepareStatement("SELECT libPrestation as Prestation, prixPrestation as Prix from prestation");
        resultSet = preparedStatement.executeQuery();
        Informations o = new Informations();
        o.gettableauPrestations().setModel(DbUtils.resultSetToTableModel(resultSet));
        o.setVisible(true);
       }
       catch (Exception e)
       {
            throw e;    
       }
        
    }
    
    
    // Méthode d'insertion des coordonnées client dans la BDD
    public static void set_client(String nom, String prenom, String adresse, String cp, String ville, String tel, String mail, Integer tarif) throws Exception
    {
       Statement statement; 
       try
       {
            // Insertion dans la BDD         
            connect = DriverManager.getConnection("jdbc:mysql://localhost/bluelagoonslam3?"
                      + "user=root&password=");
            
            statement = connect.createStatement();
            
            // System.out.println("INSERT INTO client (nomClient, prenomClient, adresseClient, cpClient, villeClient, telClient, mailClient) VALUES ('"+nom+"','"+prenom+"','"+adresse+"',"+cp+",'"+ville+"','"+tel+"','"+mail+"');");
            statement.executeUpdate("INSERT INTO client (nomClient, prenomClient, adresseClient, cpClient, villeClient, telClient, mailClient, idTarif) VALUES ('"+nom+"','"+prenom+"','"+adresse+"','"+cp+"','"+ville+"','"+tel+"','"+mail+"',"+tarif+");");            
            
            System.out.println("L'insertion s'est bien effectuée.");
       }
       catch (Exception e)
       {
            throw e;    
       }
        
    }
    
    //Methode qui permet de changer l'état d'un bracelet pour une location
    public static void louer_bracelet(Integer idbracelet, Integer idclient) throws Exception
    {
        Statement statement; 
        try
       {
                connect = DriverManager.getConnection("jdbc:mysql://localhost/bluelagoonslam3?"
                  + "user=root&password=");

                 statement = connect.createStatement();
            statement.executeUpdate("UPDATE bracelet SET etatBracelet = 'actif', idClient = "+idclient+" WHERE idBracelet = "+idbracelet);

       }
       catch (Exception e)
       {
               throw e;    
       }
        
    }
    
    
    //Methode qui permet de changer l'état d'un bracelet à inactif quand le client rend le bracelet.
   public static void rendre_bracelet(Integer idbracelet) throws Exception
    {
        Statement statement; 
        try
       {
                connect = DriverManager.getConnection("jdbc:mysql://localhost/bluelagoonslam3?"
                  + "user=root&password=");

            
            statement = connect.createStatement();
            statement.executeUpdate("UPDATE bracelet SET etatBracelet = 'inactif', idClient =907 WHERE idBracelet = "+idbracelet);

       }
       catch (Exception e)
       {
               throw e;    
       }
        
    }
}
